## What % was coethnic
mean(dfUg$mp_coeth[dfUg$mp_come == 1], na.rm = T)
mean(dfUg$chal_coeth[dfUg$chal_come == 1], na.rm = T)
mean(dfUg$chal_coeth[dfUg$mp_come == 1] == 1
& dfUg$mp_coeth[dfUg$mp_come == 1] == 1, na.rm = T)
## How often was either candidate from the NRM/FDC
mean(dfUg$chal_party == 780 | dfUg$mp_party == 780, na.rm = T)
mean(dfUg$chal_party %in% c(781, 782, 784) | dfUg$mp_party %in% c(781, 782, 784), na.rm = T)
## What was overall exposure to each different class of strategies?
mean(rowSums(dfUg[, mpExPost]), na.rm = T)
mean(rowSums(dfUg[, mpExAnte]), na.rm = T)
mean(dfUg$mp_exante_offer, na.rm = T)
mean(dfUg$mp_exante_gifts, na.rm = T)
mean(rowSums(dfUg[, chalExPost]), na.rm = T)
mean(rowSums(dfUg[, chalExAnte]), na.rm = T)
mean(dfUg$chal_exante_offer, na.rm = T)
mean(dfUg$chal_exante_gifts, na.rm = T)
## Among those who saw a candidate, how many of each strategy did they see promises did they see?
mean(rowSums(dfUg[dfUg$mp_come == 1, mpExPost]), na.rm = T)
mean(rowSums(dfUg[dfUg$mp_come == 1, mpExAnte]), na.rm = T)
mean(dfUg$mp_exante_offer[dfUg$mp_come == 1], na.rm = T)
mean(dfUg$mp_exante_gifts[dfUg$mp_come == 1], na.rm = T)
mean(rowSums(dfUg[dfUg$chal_come == 1, chalExPost]), na.rm = T)
mean(rowSums(dfUg[dfUg$chal_come == 1, chalExAnte]), na.rm = T)
mean(dfUg$chal_exante_offer[dfUg$chal_come == 1], na.rm = T)
mean(dfUg$chal_exante_gifts[dfUg$chal_come == 1], na.rm = T)
## Set cutoff for inclusion of strategies and create residual "other" category
varFam <- list(mpExPost, mpExAnte, chalExPost, chalExAnte)
varOther <- c("mp_expost_other", "mp_exante_other",
"chal_expost_other", "chal_exante_other")
useVars <- dfDesc$var_name[dfDesc$mean >= 0.05 & dfDesc$subset == "none"]
useSub <- unique(dfDesc$subset)
dfNew <- dfDesc
dfNew$subset <- factor(dfNew$subset, levels = unique(dfDesc$subset))
for(i in 1:length(useSub)){
dfAll <- dfDesc[dfDesc$subset == useSub[i], ]
for(j in 1:length(varFam)){
dfSub <- dfAll[dfAll$var_name %in% varFam[[j]], ]
dfSub <- dfSub[rev(order(dfSub$mean)), ]
otherProp <- sum(dfSub$mean[!dfSub$var_name %in% useVars])
rowNew <- c(varOther[j], useSub[i], "uganda_mass", otherProp, NA, NA, NA, "Other")
dfNew <- rbind(dfNew, rowNew)
}
}
## Build some variables to make plotting easier
dfNew$cand_type <- NA
dfNew$cand_type[grep("mp_", dfNew$var_name)] <- "MP"
dfNew$cand_type[grep("chal_", dfNew$var_name)] <- "Challenger"
dfNew$strat_type <- NA
dfNew$strat_type[grep("exante_", dfNew$var_name)] <- "Ex Ante"
dfNew$strat_type[grep("expost_", dfNew$var_name)] <- "Ex Post"
dfNew$strat_name <- str_split_fixed(dfNew$var_name, "mp_", n = 2)[, 2]
chalNames <- str_split_fixed(dfNew$var_name, "chal_", n = 2)[, 2]
dfNew$strat_name <- ifelse(dfNew$strat_name == "", chalNames, dfNew$strat_name)
dfNew <- dfNew[rev(order(dfNew$subset, dfNew$mean)), ]
dfKeep <- dfNew[dfNew$var_name %in% c(useVars, varOther), ]
dfKeep[order(dfKeep$var_name), ]
dfKeep[, c("mean", "lower_ci", "upper_ci", "num_obs")] <- sapply(dfKeep[, c("mean", "lower_ci", "upper_ci", "num_obs")], as.numeric)
########### BAR PLOTS ################
## Plot for three samples: full, NRM, opposition
dfHist <- dfKeep[dfKeep$subset %in% c("none", "mp nrm", "mp opposition")
& dfKeep$strat_type == "Ex Post", ]
dfHist$var_label <- factor(dfHist$var_label, levels = rev(unique(dfHist$var_label)))
dfHist$subset <- factor(dfHist$subset, levels = rev(c("none", "mp nrm", "mp opposition")))
dfHist$cand_type <- factor(dfHist$cand_type, levels = c("MP", "Challenger"))
require(scales) # Need this for muted() function
pHist <- ggplot(data = dfHist, aes(x = var_label, y = mean, fill = subset)) +
geom_bar(stat="identity", position = position_dodge()) +
facet_wrap(~cand_type) +
theme_bw1() +
coord_flip() +
xlab("") +
ylab("") +
geom_errorbar(aes(ymin = lower_ci, ymax = upper_ci),
width = 0.2,                  # Width of the error bars
position=position_dodge(0.9)) +
scale_fill_manual(values = c("dodgerblue4", "goldenrod2", "darkgray"),  #"#6699FF"
labels = c("Opposition", "NRM Candidates", "Full Sample"),
name = "Candidate Type") +
theme(legend.position = "bottom",
legend.direction = "horizontal") +
ggtitle("Promise-Making Behavior by Candidate Type")
pdf(file = createPath("promises_party_both_cand.pdf", "promises paper/output/figures"),
height = 5, width = 10)
print(pHist)
dev.off()
## Facet Wrap Plot for MPs with Subsets
rmSub <- grep("chal", dfKeep$subset, value = T)
dfHist <- dfKeep[!dfKeep$subset %in% c("none", "mp nrm", "mp opposition") & dfKeep$strat_type == "Ex Post"
& dfKeep$cand_type == "MP" & !dfKeep$subset %in% rmSub & dfKeep$var_label != "Other", ]
dfHist$var_label <- factor(dfHist$var_label, levels = rev(unique(dfHist$var_label)))
pHist <- ggplot(data = dfHist, aes(x = subset, y = mean, fill = cand_type)) +
geom_bar(stat="identity", position = position_dodge()) +
facet_wrap(~var_label) +
theme_bw1() +
coord_flip() +
ylim(c(0, 1)) +
ylab("Proportion Observing Strategy") +
xlab("") +
scale_x_discrete(labels = rev(c("Non-Coethnic", "Coethnic", "Non-Copartisan",
"Co-Partisan", "Male", "Female", "Urban", "Rural"))) +
geom_errorbar(aes(ymin = lower_ci, ymax = upper_ci),
width = 0.2,                  # Width of the error bars
position=position_dodge(0.9)) +
scale_fill_manual(values = c("lightgray", "darkgray"),  #"#6699FF"
#labels = c("Experimental Distribution", "Republican Population"),
name = "Candidate Type") +
theme(legend.position = "bottom",
legend.direction = "horizontal") +
ggtitle("Observed Promises by Respondent Type")
pdf(file = createPath("promises_facet_wrap_subset_mp.pdf", "promises paper/output/figures"),
height = 5, width = 10)
print(pHist)
dev.off()
######################################################################
############################## ANALYSIS ##############################
######################################################################
############################ REPUTATIONAL EFFECTS ####################
dfUg$mp_expost_all_orig <- dfUg$mp_expost_all
#dfUg$mp_expost_all <- as.factor(dfUg$mp_expost_all)
dfUg$mp_expost_all <- as.numeric(dfUg$mp_expost_all_orig)
## Setup:
depVars <- c("mp_reputation_pca", "trust_mp", "c_mp_dv_profit", "c_mp_dv_promise", "c_mp_dv_dev", "c_mp_dv_myself")
depNames <- c("Index", "Trust", "Corruption", "Promise", "Dev", "Help")
indVars <- c(dfDesc$var_name[dfDesc$mean >= 0.05 & dfDesc$subset == "none"],
"mp_exante_gifts", "mp_exante_offer", "chal_exante_gifts", "chal_exante_offer") # Takes anything that occurs more than 5% of the time
mpStrats <- grep("mp_", indVars, value = T)
mpDeliver <- paste("mp_deliver_", c("borehole", "clinic", "development", "jobs", "medicine", "roads", "school", "sports"), sep = "")
mpNumStrats <- c("mp_expost_all",  "mp_exante_all", "mp_exante_gifts", "mp_exante_offer")
chalNumStrats <- c("chal_exante_all", "chal_expost_all",  "chal_exante_gifts", "chal_exante_offer")
chalStrats <- grep("chal_", indVars, value = T)
indexVars <- paste("avg_", c("services", "poverty", "information",
"distance"), sep = "")
sesVars <- c("age", "female", "edu", "enum_rural")
polVars <- c("mp_coeth", "mp_copartisan")
feVar <- c("constituency_name")
####### ABSOLUTE NUMBER MODELS
modNames <- paste("mod", depNames, sep = "")
varNames <- c(mpNumStrats, polVars, indexVars)
varLabels <- c("Number of Promises", "Number Ex Ante Provision", "Observed Vote Buying",
"Targeted for Vote Buy", "MP Coethnic", "MP Copartisan", "Average Quality Public Services Index",
"Poverty Index", "Information Access Index", "Average Distance to Public Goods")
##### NOTE: MAKE SURE THIS MATCHES THE ORDER OF THE VARIABLES IN THE MODELS
## Model 1: raw number of promises made, minimal specification
modVars <- c("mp_expost_all")
modLabels <- c("Number of Promises")
estEq <- make.equation(depVars, c(modVars, feVar))
for(i in 1:length(modNames)){
assign(modNames[i], lm(estEq[i], data = dfUg))
}
stargazer(modIndex, modPromise, modCorruption, modTrust,
keep = c(modVars),
covariate.labels = modLabels)
## Model 2: raw number of promises made, political variables
modVars <- c(mpNumStrats, polVars)
modLabels <- c("Number of Promises", "Number Ex Ante Provision", "Observed Vote Buying",
"Targeted for Vote Buy", "MP Coethnic", "MP Copartisan")
estEq <- make.equation(depVars, c(modVars, feVar))
for(i in 1:length(modNames)){
assign(modNames[i], lm(estEq[i], data = dfUg))
}
stargazer(modIndex, modPromise, modCorruption, modTrust,
keep = c(modVars),
covariate.labels = modLabels)
## Model 3: raw number of promises made, full specification
modVars <- c(varNames)
modLabels <- c(varLabels)
estEq <- make.equation(depVars, c(modVars, sesVars, feVar))
for(i in 1:length(modNames)){
assign(modNames[i], lm(estEq[i], data = dfUg))
}
stargazer(modIndex, modPromise, modCorruption, modTrust,
keep = c(modVars),
covariate.labels = modLabels)
## Model 4: which promises made controlling for how many
useVars <- dfDesc$var_name[dfDesc$mean >= 0.05 & dfDesc$subset == "none"] # Only take strategies that show above 5%
addVars <- sort(mpExPost[mpExPost %in% useVars])
addLabels <- dfStrats$var_label[match(addVars, dfStrats$var_name)]
modVars <- c(varNames, addVars)
modLabels <- c(varLabels, addLabels)
estEq <- make.equation(depVars, c(modVars, feVar))
for(i in 1:length(modNames)){
assign(modNames[i], lm(estEq[i], data = dfUg))
}
stargazer(modIndex, modPromise, modCorruption, modTrust,
keep = c(mpNumStrats, addVars, polVars, indexVars),
covariate.labels = modLabels, style = "AJPS")
######## POST ELECTION
preVars <- paste("mp_pre_", c("borehole", "clinic", "elec", "jobs", "roads", "school"), sep = "")
modVars <- c(preVars, polVars, sesVars, indexVars)
## Model 3: Effect of provision ex post on full sample
estEq <- make.equation(depVars, c(modVars, feVar))
for(i in 1:length(modNames)){
assign(modNames[i], lm(estEq[i], data = dfUg))
}
stargazer(modIndex, modPromise, modCorruption, modTrust,
keep = modVars, style = "AJPS")
uganda_jan17_merged_analysis <- read.csv("C:/Users/brand/Dropbox/coauthored projects/Enumerator Fixed Effects/data/cleaned data/uganda_jan17_merged_analysis.csv")
View(uganda_jan17_merged_analysis)
df <- uganda_jan17_merged_analysis
colnames(df)
table(df$game_id)
table(df$manip_pp)
table(df$owner_polr)
# Replication Code for "Improving the External Validity of Conjoint Analysis" by de la Cuesta, Egami, and Imai
# Our re-analysis of the data from Peterson (2017)
rm(list=ls())
library("PopCon")
# Setup
load("../data/peterson_data_analysis.rdata")
# MODEL-BASED ANALYSIS
#  To estimate the copartisanship effect, we estimate the effect of party separately for Rep and Dem and average them later.
# Democrats
data_dem <- dfPet[dfPet$party.id == "Democrat", ]
data_dem <- data_dem[order(data_dem$pair_id), ]
side_dem <- rep(c(1,0),times=nrow(data_dem)/2)
data_dem <- data_dem[side_dem == 1,]
m_dem <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_dem, reg =  FALSE,
cluster = data_dem$id, target_dist = marUse,
target_type = rep("marginal", 3))
# Republican
data_rep <- dfPet[dfPet$party.id == "Republican", ]
data_rep <- data_rep[order(data_rep$pair_id), ]
side_rep <- rep(c(1,0),times=nrow(data_rep)/2)
data_rep <- data_rep[side_rep == 1,]
data_rep$party <- relevel(data_rep$party, ref = "Democrat")
m_rep <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_rep, reg = FALSE,
cluster = data_rep$id,
target_dist = marUse,
target_type = rep("marginal", 3))
## Combine Estimates
w_dem <- dim(data_dem)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
w_rep <- dim(data_rep)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
AME_party <- m_dem$AME$party
AME_party$estimate <- w_dem*m_dem$AME$party$estimate + w_rep*m_rep$AME$party$estimate
AME_party$se <- sqrt((w_dem^2)*(m_dem$AME$party$se^2) + (w_rep^2)*(m_rep$AME$party$se^2))
AME_party$low.95ci <- AME_party$estimate - 1.96*AME_party$se
AME_party$high.95ci <- AME_party$estimate + 1.96*AME_party$se
peterson_results_model  <- list("m_dem" = m_dem, "m_rep" = m_rep, "AME_party" = AME_party)
setwd("C:/Users/brand/Dropbox/coauthored projects/conjoint paper/replication archive/peterson/code")
# Replication Code for "Improving the External Validity of Conjoint Analysis" by de la Cuesta, Egami, and Imai
# Our re-analysis of the data from Peterson (2017)
rm(list=ls())
library("PopCon")
# Setup
load("../data/peterson_data_analysis.rdata")
# MODEL-BASED ANALYSIS
#  To estimate the copartisanship effect, we estimate the effect of party separately for Rep and Dem and average them later.
# Democrats
data_dem <- dfPet[dfPet$party.id == "Democrat", ]
data_dem <- data_dem[order(data_dem$pair_id), ]
side_dem <- rep(c(1,0),times=nrow(data_dem)/2)
data_dem <- data_dem[side_dem == 1,]
m_dem <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_dem, reg =  FALSE,
cluster = data_dem$id, target_dist = marUse,
target_type = rep("marginal", 3))
# Republican
data_rep <- dfPet[dfPet$party.id == "Republican", ]
data_rep <- data_rep[order(data_rep$pair_id), ]
side_rep <- rep(c(1,0),times=nrow(data_rep)/2)
data_rep <- data_rep[side_rep == 1,]
data_rep$party <- relevel(data_rep$party, ref = "Democrat")
m_rep <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_rep, reg = FALSE,
cluster = data_rep$id,
target_dist = marUse,
target_type = rep("marginal", 3))
## Combine Estimates
w_dem <- dim(data_dem)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
w_rep <- dim(data_rep)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
AME_party <- m_dem$AME$party
AME_party$estimate <- w_dem*m_dem$AME$party$estimate + w_rep*m_rep$AME$party$estimate
AME_party$se <- sqrt((w_dem^2)*(m_dem$AME$party$se^2) + (w_rep^2)*(m_rep$AME$party$se^2))
AME_party$low.95ci <- AME_party$estimate - 1.96*AME_party$se
AME_party$high.95ci <- AME_party$estimate + 1.96*AME_party$se
peterson_results_model  <- list("m_dem" = m_dem, "m_rep" = m_rep, "AME_party" = AME_party)
# Setup
load("../data/peterson_data_analysis.rdata")
rm(list=ls())
rm(list=ls())
library("PopCon")
# Setup
load("../data/peterson_data_analysis.rdata")
# MODEL-BASED ANALYSIS
#  To estimate the copartisanship effect, we estimate the effect of party separately for Rep and Dem and average them later.
# Democrats
data_dem <- dfPet[dfPet$party.id == "Democrat", ]
data_dem <- data_dem[order(data_dem$pair_id), ]
side_dem <- rep(c(1,0),times=nrow(data_dem)/2)
data_dem <- data_dem[side_dem == 1,]
m_dem <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_dem, reg =  FALSE,
cluster = data_dem$id, target_dist = marUse,
target_type = rep("marginal", 3))
# Republican
data_rep <- dfPet[dfPet$party.id == "Republican", ]
data_rep <- data_rep[order(data_rep$pair_id), ]
side_rep <- rep(c(1,0),times=nrow(data_rep)/2)
data_rep <- data_rep[side_rep == 1,]
data_rep$party <- relevel(data_rep$party, ref = "Democrat")
m_rep <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_rep, reg = FALSE,
cluster = data_rep$id,
target_dist = marUse,
target_type = rep("marginal", 3))
## Combine Estimates
w_dem <- dim(data_dem)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
w_rep <- dim(data_rep)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
AME_party <- m_dem$AME$party
AME_party$estimate <- w_dem*m_dem$AME$party$estimate + w_rep*m_rep$AME$party$estimate
AME_party$se <- sqrt((w_dem^2)*(m_dem$AME$party$se^2) + (w_rep^2)*(m_rep$AME$party$se^2))
AME_party$low.95ci <- AME_party$estimate - 1.96*AME_party$se
AME_party$high.95ci <- AME_party$estimate + 1.96*AME_party$se
peterson_results_model  <- list("m_dem" = m_dem, "m_rep" = m_rep, "AME_party" = AME_party)
require(devtools)
setwd("C:/Users/brand/Desktop/PopCon-master")
build()
install()
pAMCE
# MODEL-BASED ANALYSIS
#  To estimate the copartisanship effect, we estimate the effect of party separately for Rep and Dem and average them later.
# Democrats
data_dem <- dfPet[dfPet$party.id == "Democrat", ]
data_dem <- data_dem[order(data_dem$pair_id), ]
side_dem <- rep(c(1,0),times=nrow(data_dem)/2)
data_dem <- data_dem[side_dem == 1,]
m_dem <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_dem, reg =  FALSE,
cluster = data_dem$id, target_dist = marUse,
target_type = rep("marginal", 3))
# Republican
data_rep <- dfPet[dfPet$party.id == "Republican", ]
data_rep <- data_rep[order(data_rep$pair_id), ]
side_rep <- rep(c(1,0),times=nrow(data_rep)/2)
data_rep <- data_rep[side_rep == 1,]
data_rep$party <- relevel(data_rep$party, ref = "Democrat")
m_rep <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_rep, reg = FALSE,
cluster = data_rep$id,
target_dist = marUse,
target_type = rep("marginal", 3))
## Combine Estimates
w_dem <- dim(data_dem)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
w_rep <- dim(data_rep)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
AME_party <- m_dem$AME$party
AME_party$estimate <- w_dem*m_dem$AME$party$estimate + w_rep*m_rep$AME$party$estimate
AME_party$se <- sqrt((w_dem^2)*(m_dem$AME$party$se^2) + (w_rep^2)*(m_rep$AME$party$se^2))
AME_party$low.95ci <- AME_party$estimate - 1.96*AME_party$se
AME_party$high.95ci <- AME_party$estimate + 1.96*AME_party$se
peterson_results_model  <- list("m_dem" = m_dem, "m_rep" = m_rep, "AME_party" = AME_party)
peterson_results_model_new
peterson_results_model_new <- peterson_results_model
load("C:/Users/brand/Dropbox/coauthored projects/conjoint paper/replication archive/peterson/result/peterson_results_model.rdata")
peterson_results_model_old <- peterson_results_model
peterson_results_model_new
peterson_results_model_new$AME_party
peterson_results_model_old$AME_party
setwd("C:/Users/brand/Dropbox/coauthored projects/conjoint paper/replication archive/peterson/data")
source('C:/Users/brand/Dropbox/coauthored projects/conjoint paper/replication archive/peterson/data/peterson_data_prep.R', echo=TRUE)
rm(list=ls())
library("PopCon")
# Setup
load("../data/peterson_data_analysis.rdata")
# MODEL-BASED ANALYSIS
#  To estimate the copartisanship effect, we estimate the effect of party separately for Rep and Dem and average them later.
# Democrats
data_dem <- dfPet[dfPet$party.id == "Democrat", ]
data_dem <- data_dem[order(data_dem$pair_id), ]
side_dem <- rep(c(1,0),times=nrow(data_dem)/2)
data_dem <- data_dem[side_dem == 1,]
m_dem <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_dem, reg =  FALSE,
cluster = data_dem$id, target_dist = marUse,
target_type = rep("marginal", 3))
# Republican
data_rep <- dfPet[dfPet$party.id == "Republican", ]
data_rep <- data_rep[order(data_rep$pair_id), ]
side_rep <- rep(c(1,0),times=nrow(data_rep)/2)
data_rep <- data_rep[side_rep == 1,]
data_rep$party <- relevel(data_rep$party, ref = "Democrat")
m_rep <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_rep, reg = FALSE,
cluster = data_rep$id,
target_dist = marUse,
target_type = rep("marginal", 3))
## Combine Estimates
w_dem <- dim(data_dem)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
w_rep <- dim(data_rep)[1]/(dim(data_dem)[1] + dim(data_rep)[1])
AME_party <- m_dem$AME$party
AME_party$estimate <- w_dem*m_dem$AME$party$estimate + w_rep*m_rep$AME$party$estimate
AME_party$se <- sqrt((w_dem^2)*(m_dem$AME$party$se^2) + (w_rep^2)*(m_rep$AME$party$se^2))
AME_party$low.95ci <- AME_party$estimate - 1.96*AME_party$se
AME_party$high.95ci <- AME_party$estimate + 1.96*AME_party$se
peterson_results_model  <- list("m_dem" = m_dem, "m_rep" = m_rep, "AME_party" = AME_party)
peterson_results_model$AME_party
peterson_results_model_old$AME_party
petNew <- peterson_results_model
rm("peterson_results_model")
load("C:/Users/brand/Dropbox/coauthored projects/conjoint paper/replication archive/peterson/result/peterson_results_model.rdata")
peterson_results_model$AME_party
petNew$AME_party
dfExp$id <- as.character(dfExp$participant.id)
dfExp$task <- dfExp$choice.task.number # Need to get the choice task number otherwise pair_id won't work
dfExp[dfExp$id[which(table(dfExp$id) != 6)], ] # This should return zero, should be 6 observations for other respondent
dfExp$pair_id <- paste(dfExp$id, dfExp$task, sep = "-") # This should return 3 unique values for every respondent (2 profiles x 3 tasks)
pairCheck <- tapply(dfExp$pair_id, dfExp$id, FUN = function(x){length(unique(x))})
pairCheck[pairCheck != 3] # This should return 0
rm(list=ls())
library(arm)
## Setup
load("estimation.data.conjoint.RData")
dfExp <- estimation.data.conjoint; rm(estimation.data.conjoint)
makeDist <- function(factors, data, which.dist = "experimental"){
factorName <- sort(factors)
df <- data
## Get the order of each factor directly from the data
if(which.dist == "experimental"){
propLevels <- c()
for(l in 1:length(factorName)){
dfSub <- droplevels(as.factor(df[, factorName[l]]))
propTab <- prop.table(table(dfSub))
names(propTab) <- paste(factorName[l], names(propTab), sep = "")
propMat <- cbind(gsub(factorName[l], "", names(propTab)), propTab, factorName[l])
rownames(propMat) <- NULL
propLevels <- rbind(propLevels, propMat)} # Close l loop
propLevels <- as.data.frame(propLevels, stringsAsFactors = F)
colnames(propLevels) <- c("levels", "prop", "factor")
propLevels <- propLevels[, c("factor", "levels", "prop")]
propLevels$prop <- as.numeric(as.character(propLevels$prop))
propLevels <- propLevels[order(propLevels$factor), ]
return(propLevels)
}
if(which.dist == "uniform"){
propUnif <- c()
for(l in 1:length(factorName)){
dfSub <- droplevels(as.factor(df[, factorName[l]]))
propTab <- rep(1/length(levels(dfSub)), length(levels(dfSub)))
names(propTab) <- paste(factorName[l], levels(dfSub), sep = "")
propMat <- cbind(gsub(factorName[l], "", names(propTab)), propTab, factorName[l])
rownames(propMat) <- NULL
propUnif <- rbind(propUnif, propMat)
}
propUnif <- as.data.frame(propUnif)
colnames(propUnif) <- c("levels", "prop", "factor")
propUnif <- propUnif[, c("factor", "levels", "prop")]
propUnif$prop <- as.numeric(as.character(propUnif$prop))
propUnif <- propUnif[order(propUnif$factor), ]
return(propUnif)
}
}
## Prep data
dfExp$id <- as.character(dfExp$participant.id)
dfExp$task <- dfExp$choice.task.number # Need to get the choice task number otherwise pair_id won't work
dfExp[dfExp$id[which(table(dfExp$id) != 6)], ] # This should return zero, should be 6 observations for other respondent
dfExp$pair_id <- paste(dfExp$id, dfExp$task, sep = "-") # This should return 3 unique values for every respondent (2 profiles x 3 tasks)
pairCheck <- tapply(dfExp$pair_id, dfExp$id, FUN = function(x){length(unique(x))})
pairCheck[pairCheck != 3] # This should return 0
head(dfExp)
dfNew <- dfExp[order(dfExp$pair_id)]
dfNew <- dfExp[order(dfExp$pair_id), ]
head(dfNew)
head(dfExp)
head(dfExp[dfExp$id == dfExp$id[1], ])
dim(data_dem)[1]
rm(list=ls())
library("PopCon")
# Setup
load("../data/peterson_data_analysis.rdata")
# MODEL-BASED ANALYSIS
#  To estimate the copartisanship effect, we estimate the effect of party separately for Rep and Dem and average them later.
# Democrats
data_dem <- dfPet[dfPet$party.id == "Democrat", ]
data_dem <- data_dem[order(data_dem$pair_id), ]
side_dem <- rep(c(1,0),times=nrow(data_dem)/2)
data_dem <- data_dem[side_dem == 1,]
m_dem <- pAMCE(formula = chosen.candidate ~ party + gender + profession + age +
family.status + race + military.service +  education + abortion.stance + spending.stance,
data = data_dem, reg =  FALSE,
cluster = data_dem$id, target_dist = marUse,
target_type = rep("marginal", 3))
dim(data_dem)[1]
head(data_dem)
data_rep <- dfPet[dfPet$party.id == "Republican", ]
data_rep <- data_rep[order(data_rep$pair_id), ]
head(data_rep)
setwd("C:/Users/brand/Dropbox/coauthored projects/Resource Curse/data and analysis/papers/PNAS Submission/replication PNAS (final-public)")
make.equation <- function(dvs, ivs, interactions = c()){
return(paste(dvs, "~", paste(c(ivs, interactions), sep = "", collapse = " + ")))
}
## Load in data
load("data/uganda_citizen_imputed_manip.RData")
load("data/ghana_citizen_imputed_manip.RData")
range(gh.imp.manip$benefit_avg)
mean(gh.imp.manip$benefit_avg)
mean(gh.imp.manip$misapp_avg)
mean(gh.imp.manip$misapp_avg, na.rm = T)
mean(gh.imp.manip$misappropriation_avg, na.rm = T)
mean(gh.imp.manip$action_avg, na.rm = T)
range(gh.imp.manip$action_avg, na.rm = T)
